home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Development Platforms / MPW Related / MPW Interfaces / CIncludes / PPCToolBox.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-17  |  12.7 KB  |  371 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        PPCToolBox.h
  3.  
  4.     Copyright:    © 1983-1993 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    System 7.1 for ETO #11
  8.     Created:    Tuesday, March 30, 1993 18:00
  9.  
  10. */
  11.  
  12. #ifndef __PPCTOOLBOX__
  13. #define __PPCTOOLBOX__
  14.  
  15. #ifndef __APPLETALK__
  16. #include <AppleTalk.h>
  17. #endif
  18.  
  19. #ifndef __MEMORY__
  20. #include <Memory.h>
  21. #endif
  22.  
  23. #ifndef __TYPES__
  24. #include <Types.h>
  25. #endif
  26.  
  27. typedef unsigned char PPCServiceType;
  28.  
  29. enum {
  30.  
  31.     ppcServiceRealTime = 1
  32. };
  33.  
  34. typedef short PPCLocationKind;
  35.  
  36. enum {
  37.  
  38.     ppcNoLocation = 0,                          /* There is no PPCLocName */
  39.     ppcNBPLocation = 1,                         /* Use AppleTalk NBP      */
  40.     ppcNBPTypeLocation = 2                      /* Used for specifying a location name type during PPCOpen only */
  41. };
  42.  
  43. typedef short PPCPortKinds;
  44.  
  45. enum {
  46.  
  47.  ppcByCreatorAndType = 1,                    /* Port type is specified as colloquial Mac creator and type */
  48.  ppcByString = 2                            /* Port type is in pascal string format */
  49. };
  50.  
  51. typedef unsigned char PPCSessionOrigin;         /* Values returned for request field in PPCInform call */
  52.  
  53. enum {
  54.  
  55.  
  56. /* Values returned for requestType field in PPCInform call */
  57.     ppcLocalOrigin = 1,                         /* session originated from this machine */
  58.     ppcRemoteOrigin = 2                         /* session originated from remote machine */
  59. };
  60.  
  61. typedef short PPCPortRefNum;
  62. typedef long PPCSessRefNum;
  63.  
  64. struct PPCPortRec {
  65.     ScriptCode nameScript;                      /* script of name */
  66.     Str32 name;                                 /* name of port as seen in browser */
  67.     PPCPortKinds portKindSelector;              /* which variant */
  68.     union {
  69.         Str32 portTypeStr;                      /* pascal type string */
  70.         struct {
  71.             OSType creator;
  72.             OSType type;
  73.             } port;
  74.         } u;
  75. };
  76.  
  77. typedef struct PPCPortRec PPCPortRec;
  78. typedef PPCPortRec *PPCPortPtr;
  79.  
  80. struct LocationNameRec {
  81.     PPCLocationKind locationKindSelector;       /* which variant */
  82.     union {
  83.         EntityName nbpEntity;                   /* NBP name entity */
  84.         Str32 nbpType;                          /* just the NBP type string, for PPCOpen */
  85.         } u;
  86. };
  87.  
  88. typedef struct LocationNameRec LocationNameRec;
  89. typedef LocationNameRec *LocationNamePtr;
  90.  
  91. struct PortInfoRec {
  92.     unsigned char filler1;
  93.     Boolean authRequired;
  94.     PPCPortRec name;
  95. };
  96.  
  97. typedef struct PortInfoRec PortInfoRec;
  98. typedef PortInfoRec *PortInfoPtr;
  99.  
  100.  
  101. typedef PortInfoRec *PortInfoArrayPtr;
  102. typedef pascal Boolean (*PPCFilterProcPtr)(LocationNamePtr, PortInfoPtr);
  103. /* Procedures you will need to write */
  104. /* ex:  void    MyCompletionRoutine(PPCParamBlkPtr pb) */
  105. /* ex:  pascal Boolean MyPortFilter(LocationNamePtr, PortInfoPtr) */
  106. typedef ProcPtr PPCCompProcPtr;
  107.  
  108.  
  109. #define PPCHeader \
  110.      Ptr            qLink;                   /* PPC's Internal Use */\
  111.      unsigned short csCode;                   /* Requested PPC command */\
  112.      unsigned short intUse;                   /* Internal Use */\
  113.      Ptr            intUsePtr;              /* Internal Use */\
  114.                                             /* 12 --> */\
  115.      PPCCompProcPtr ioCompletion;             /* Completion Routine */\
  116.                                             /* 16 <-- */\
  117.      OSErr           ioResult;                  /* Command Result Code */\
  118.      unsigned long    Reserved[5];             /* Reserved for PPC, Don't use */
  119.  
  120. struct PPCOpenPBRec {
  121.  PPCHeader 
  122.  PPCPortRefNum portRefNum;                    /* 38 <--   Port Reference */
  123.  long filler1;
  124.  PPCServiceType serviceType;                /* 44 -->    Bit field describing the requested port service */
  125.  unsigned char resFlag;                     /* Must be set to 0 */
  126.  PPCPortPtr portName;                        /* 46 -->   PortName for PPC */
  127.  LocationNamePtr locationName;                /* 50 -->   If NBP Registration is required */
  128.  Boolean networkVisible;                    /* 54 -->   make this network visible on network */
  129.  Boolean nbpRegistered;                        /* 55 <--   The given location name was registered on the network */
  130. };
  131.  
  132. typedef struct PPCOpenPBRec PPCOpenPBRec;
  133. typedef PPCOpenPBRec *PPCOpenPBPtr;
  134.  
  135. struct PPCInformPBRec {
  136.  PPCHeader
  137.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  138.  PPCSessRefNum sessRefNum;                    /* 40 <--   Session Reference */
  139.  PPCServiceType serviceType;                /* 44 <--   Status Flags for type of session, local, remote */
  140.  Boolean autoAccept;                        /* 45 -->   if true session will be accepted automatically */
  141.  PPCPortPtr portName;                        /* 46 -->   Buffer for Source PPCPortRec */
  142.  LocationNamePtr locationName;                /* 50 -->   Buffer for Source LocationNameRec */
  143.  StringPtr userName;                        /* 54 -->   Buffer for Soure user's name trying to link. */
  144.  unsigned long userData;                    /* 58 <--   value included in PPCStart's userData */
  145.  PPCSessionOrigin requestType;                /* 62 <--   Local or Network */
  146. };
  147.  
  148. typedef struct PPCInformPBRec PPCInformPBRec;
  149. typedef PPCInformPBRec *PPCInformPBPtr;
  150.  
  151. struct PPCStartPBRec {
  152.  PPCHeader
  153.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  154.  PPCSessRefNum sessRefNum;                    /* 40 <--   Session Reference */
  155.  PPCServiceType serviceType;                /* 44 <--   Actual service method (realTime) */
  156.  unsigned char resFlag;                        /* 45 -->   Must be set to 0  */
  157.  PPCPortPtr portName;                        /* 46 -->   Destination portName */
  158.  LocationNamePtr locationName;                /* 50 -->   NBP or NAS style service location name */
  159.  unsigned long rejectInfo;                    /* 54 <--   reason for rejecting the session request */
  160.  unsigned long userData;                    /* 58 -->   Copied to destination PPCInform parameter block */
  161.  unsigned long userRefNum;                    /* 62 -->   userRefNum (obtained during login process)  */
  162. };
  163.  
  164. typedef struct PPCStartPBRec PPCStartPBRec;
  165. typedef PPCStartPBRec *PPCStartPBPtr;
  166.  
  167. struct PPCAcceptPBRec {
  168.  PPCHeader
  169.  short filler1;
  170.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  171. };
  172.  
  173. typedef struct PPCAcceptPBRec PPCAcceptPBRec;
  174. typedef PPCAcceptPBRec *PPCAcceptPBPtr;
  175.  
  176. struct PPCRejectPBRec {
  177.  PPCHeader
  178.  short filler1;
  179.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  180.  short filler2;
  181.  long filler3;
  182.  long filler4;
  183.  unsigned long rejectInfo;                    /* 54 -->   reason for rejecting the session request  */
  184. };
  185.  
  186. typedef struct PPCRejectPBRec PPCRejectPBRec;
  187. typedef PPCRejectPBRec *PPCRejectPBPtr;
  188.  
  189. struct PPCWritePBRec {
  190.  PPCHeader
  191.  short filler1;
  192.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  193.  Size bufferLength;                            /* 44 -->   Length of the message buffer */
  194.  Size actualLength;                            /* 48 <--   Actual Length Written */
  195.  Ptr bufferPtr;                                /* 52 -->   Pointer to message buffer */
  196.  Boolean more;                                /* 56 -->   if more data in this block will be written */
  197.  unsigned char filler2;
  198.  unsigned long userData;                    /* 58 -->   Message block userData Uninterpreted by PPC */
  199.  OSType blockCreator;                        /* 62 -->   Message block creator Uninterpreted by PPC */
  200.  OSType blockType;                            /* 66 -->   Message block type Uninterpreted by PPC */
  201. };
  202.  
  203. typedef struct PPCWritePBRec PPCWritePBRec;
  204. typedef PPCWritePBRec *PPCWritePBPtr;
  205.  
  206. struct PPCReadPBRec {
  207.  PPCHeader
  208.  short filler1;
  209.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  210.  Size bufferLength;                            /* 44 -->   Length of the message buffer */
  211.  Size actualLength;                            /* 48 <--   Actual length read */
  212.  Ptr bufferPtr;                                /* 52 -->   Pointer to message buffer */
  213.  Boolean more;                                /* 56 <--   if true more data in this block to be read */
  214.  unsigned char filler2;
  215.  unsigned long userData;                    /* 58 <--   Message block userData Uninterpreted by PPC */
  216.  OSType blockCreator;                        /* 62 <--   Message block creator Uninterpreted by PPC */
  217.  OSType blockType;                            /* 66 <--   Message block type Uninterpreted by PPC */
  218. };
  219.  
  220. typedef struct PPCReadPBRec PPCReadPBRec;
  221. typedef PPCReadPBRec *PPCReadPBPtr;
  222.  
  223. struct PPCEndPBRec {
  224.  PPCHeader
  225.     short filler1;
  226.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  227. };
  228.  
  229. typedef struct PPCEndPBRec PPCEndPBRec;
  230. typedef PPCEndPBRec *PPCEndPBPtr;
  231.  
  232. struct PPCClosePBRec {
  233.  PPCHeader
  234.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  235. };
  236.  
  237. typedef struct PPCClosePBRec PPCClosePBRec;
  238. typedef PPCClosePBRec *PPCClosePBPtr;
  239.  
  240. struct IPCListPortsPBRec {
  241.  PPCHeader
  242.  short filler1;
  243.  unsigned short startIndex;                    /* 40 -->   Start Index */
  244.  unsigned short requestCount;                /* 42 -->   Number of entries to be returned */
  245.  unsigned short actualCount;                /* 44 <--   Actual Number of entries to be returned */
  246.  PPCPortPtr portName;                        /* 46 -->   PortName Match */
  247.  LocationNamePtr locationName;                /* 50 -->   NBP or NAS type name to locate the Port Location */
  248.  PortInfoArrayPtr bufferPtr;                /* 54 -->   Pointer to a buffer requestCount*sizeof(PortInfo) bytes big */
  249. };
  250.  
  251. typedef struct IPCListPortsPBRec IPCListPortsPBRec;
  252. typedef IPCListPortsPBRec *IPCListPortsPBPtr;
  253.  
  254. union PPCParamBlockRec {
  255.         PPCOpenPBRec        openParam;
  256.         PPCInformPBRec           informParam;
  257.         PPCStartPBRec        startParam;
  258.         PPCAcceptPBRec         acceptParam;
  259.         PPCRejectPBRec         rejectParam;
  260.         PPCWritePBRec        writeParam;
  261.         PPCReadPBRec        readParam;
  262.         PPCEndPBRec              endParam;
  263.         PPCClosePBRec        closeParam;
  264.         IPCListPortsPBRec    listPortsParam;
  265. };
  266.  
  267. typedef union PPCParamBlockRec PPCParamBlockRec;
  268. typedef  PPCParamBlockRec  *PPCParamBlockPtr;
  269.  
  270.  
  271. #ifdef __cplusplus
  272. extern "C" {
  273. #endif
  274. /*  PPC Calling Conventions  */
  275. #pragma parameter __D0 PPCInit
  276. pascal OSErr PPCInit(void)
  277.     = {0x7000,0xA0DD}; 
  278. pascal OSErr PPCOpen(PPCOpenPBPtr pb,Boolean async); 
  279. #pragma parameter __D0 PPCOpenSync(__A0)
  280. pascal OSErr PPCOpenSync(PPCOpenPBPtr pb)
  281.     = {0x7001,0xA0DD}; 
  282. #pragma parameter __D0 PPCOpenAsync(__A0)
  283. pascal OSErr PPCOpenAsync(PPCOpenPBPtr pb)
  284.     = {0x7001,0xA4DD}; 
  285. pascal OSErr PPCInform(PPCInformPBPtr pb,Boolean async); 
  286. #pragma parameter __D0 PPCInformSync(__A0)
  287. pascal OSErr PPCInformSync(PPCInformPBPtr pb)
  288.     = {0x7003,0xA0DD}; 
  289. #pragma parameter __D0 PPCInformAsync(__A0)
  290. pascal OSErr PPCInformAsync(PPCInformPBPtr pb)
  291.     = {0x7003,0xA4DD}; 
  292. pascal OSErr PPCStart(PPCStartPBPtr pb,Boolean async); 
  293. #pragma parameter __D0 PPCStartSync(__A0)
  294. pascal OSErr PPCStartSync(PPCStartPBPtr pb)
  295.     = {0x7002,0xA0DD}; 
  296. #pragma parameter __D0 PPCStartAsync(__A0)
  297. pascal OSErr PPCStartAsync(PPCStartPBPtr pb)
  298.     = {0x7002,0xA4DD}; 
  299. pascal OSErr PPCAccept(PPCAcceptPBPtr pb,Boolean async); 
  300. #pragma parameter __D0 PPCAcceptSync(__A0)
  301. pascal OSErr PPCAcceptSync(PPCAcceptPBPtr pb)
  302.     = {0x7004,0xA0DD}; 
  303. #pragma parameter __D0 PPCAcceptAsync(__A0)
  304. pascal OSErr PPCAcceptAsync(PPCAcceptPBPtr pb)
  305.     = {0x7004,0xA4DD}; 
  306. pascal OSErr PPCReject(PPCRejectPBPtr pb,Boolean async); 
  307. #pragma parameter __D0 PPCRejectSync(__A0)
  308. pascal OSErr PPCRejectSync(PPCRejectPBPtr pb)
  309.     = {0x7005,0xA0DD}; 
  310. #pragma parameter __D0 PPCRejectAsync(__A0)
  311. pascal OSErr PPCRejectAsync(PPCRejectPBPtr pb)
  312.     = {0x7005,0xA4DD}; 
  313. pascal OSErr PPCWrite(PPCWritePBPtr pb,Boolean async); 
  314. #pragma parameter __D0 PPCWriteSync(__A0)
  315. pascal OSErr PPCWriteSync(PPCWritePBPtr pb)
  316.     = {0x7006,0xA0DD}; 
  317. #pragma parameter __D0 PPCWriteAsync(__A0)
  318. pascal OSErr PPCWriteAsync(PPCWritePBPtr pb)
  319.     = {0x7006,0xA4DD}; 
  320. pascal OSErr PPCRead(PPCReadPBPtr pb,Boolean async); 
  321. #pragma parameter __D0 PPCReadSync(__A0)
  322. pascal OSErr PPCReadSync(PPCReadPBPtr pb)
  323.     = {0x7007,0xA0DD}; 
  324. #pragma parameter __D0 PPCReadAsync(__A0)
  325. pascal OSErr PPCReadAsync(PPCReadPBPtr pb)
  326.     = {0x7007,0xA4DD}; 
  327. pascal OSErr PPCEnd(PPCEndPBPtr pb,Boolean async); 
  328. #pragma parameter __D0 PPCEndSync(__A0)
  329. pascal OSErr PPCEndSync(PPCEndPBPtr pb)
  330.     = {0x7008,0xA0DD}; 
  331. #pragma parameter __D0 PPCEndAsync(__A0)
  332. pascal OSErr PPCEndAsync(PPCEndPBPtr pb)
  333.     = {0x7008,0xA4DD}; 
  334. pascal OSErr PPCClose(PPCClosePBPtr pb,Boolean async); 
  335. #pragma parameter __D0 PPCCloseSync(__A0)
  336. pascal OSErr PPCCloseSync(PPCClosePBPtr pb)
  337.     = {0x7009,0xA0DD}; 
  338. #pragma parameter __D0 PPCCloseAsync(__A0)
  339. pascal OSErr PPCCloseAsync(PPCClosePBPtr pb)
  340.     = {0x7009,0xA4DD}; 
  341. pascal OSErr IPCListPorts(IPCListPortsPBPtr pb,Boolean async); 
  342. #pragma parameter __D0 IPCListPortsSync(__A0)
  343. pascal OSErr IPCListPortsSync(IPCListPortsPBPtr pb)
  344.     = {0x700A,0xA0DD}; 
  345. #pragma parameter __D0 IPCListPortsAsync(__A0)
  346. pascal OSErr IPCListPortsAsync(IPCListPortsPBPtr pb)
  347.     = {0x700A,0xA4DD}; 
  348.  
  349. pascal OSErr DeleteUserIdentity(unsigned long userRef); 
  350. pascal OSErr GetDefaultUser(unsigned long *userRef,
  351.                             Str32 userName); 
  352. pascal OSErr StartSecureSession(PPCStartPBPtr pb,
  353.                                 Str32 userName,
  354.                                 Boolean useDefault,
  355.                                 Boolean allowGuest,
  356.                                 Boolean *guestSelected,
  357.                                 ConstStr255Param prompt); 
  358. pascal OSErr PPCBrowser(ConstStr255Param prompt,
  359.                         ConstStr255Param applListLabel,
  360.                         Boolean defaultSpecified,
  361.                         LocationNameRec *theLocation,
  362.                         PortInfoRec *thePortInfo,
  363.                         PPCFilterProcPtr portFilter,
  364.                         ConstStr32Param theLocNBPType)
  365.     = {0x303C,0x0D00,0xA82B}; 
  366. #ifdef __cplusplus
  367. }
  368. #endif
  369.  
  370. #endif
  371.